﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.ObjectModel;


namespace Modelo.Sistema
{
    public class CatalogoTipoMatprima
    {
        private static CatalogoTipoMatprima _Instancia;
        public static CatalogoTipoMatprima ObtenerInstancia()
        {
            if (_Instancia == null)
            {
                _Instancia = new CatalogoTipoMatprima();
            }
            return _Instancia;
        }
        
        private List<Entidades.Sistema.TipoMateriaPrima> Col_TipMateriaPrima;

        private CatalogoTipoMatprima()
        {
            Col_TipMateriaPrima = Mapping.Sistema.MappingTipoMateriaPrima.ConsultartipoMateriaPrima();
        }
      
        public ReadOnlyCollection<Entidades.Sistema.TipoMateriaPrima> ListarTipomatprima()
        {
            return Col_TipMateriaPrima.AsReadOnly();
        }
        
        public bool AgregarTipoMatprima(Entidades.Sistema.TipoMateriaPrima oTipoMateriaPrima)
        {
            Col_TipMateriaPrima.Add(oTipoMateriaPrima);
            return Mapping.Sistema.MappingTipoMateriaPrima.AgregarTipoMateriaPrima(oTipoMateriaPrima);
        }

        public bool EliminarTipoMatprima(Entidades.Sistema.TipoMateriaPrima oTipoMateriaPrima)
        {
            Col_TipMateriaPrima.Remove(oTipoMateriaPrima);
            return Mapping.Sistema.MappingTipoMateriaPrima.EliminarTipoMateriaPrima(oTipoMateriaPrima);
        }
        public void ModificarTipoMatPrim(Entidades.Sistema.TipoMateriaPrima oTipoMateriaPrima)
        {
            Mapping.Sistema.MappingTipoMateriaPrima.ModificarTipoMateriaPrima(oTipoMateriaPrima);
            Col_TipMateriaPrima.Remove(oTipoMateriaPrima);
            Col_TipMateriaPrima.Add(oTipoMateriaPrima);
        }

        public bool ValidarExistencia(Entidades.Sistema.TipoMateriaPrima oTipoMateriaPrima)
        {
            if (this.Col_TipMateriaPrima.Count(omatpri => omatpri.cod_tipo_materiaprima == oTipoMateriaPrima.cod_tipo_materiaprima) == 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        
    }
}
